package com.xu.cloud.common.idempotent.support;

import com.xu.cloud.common.api.ApiVersion;
import com.xu.cloud.common.constant.HttpConstant;
import com.xu.cloud.common.idempotent.IdempotentApi;
import com.xu.cloud.common.idempotent.IdempotentIfc;
import com.xu.cloud.common.pojo.http.resp.CreateIdempotentTokenResp;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 创建幂等token api实现
 *
 * @author xuguan
 * @since 2025/3/17
 */
@RestController
@RequestMapping("/open/api")
@ApiVersion(version = HttpConstant.API_VERSION_V1)
public class IdempotentController implements IdempotentApi {

    private final IdempotentIfc idempotentIfc;

    public IdempotentController(IdempotentIfc idempotentIfc) {
        this.idempotentIfc = idempotentIfc;
    }

    @GetMapping("/idempotent/createToken/" + HttpConstant.API_VERSION_PLACEHOLDER)
    public CreateIdempotentTokenResp createIdempotentToken() {
        final CreateIdempotentTokenResp resp = new CreateIdempotentTokenResp();
        final String idempotentToken = idempotentIfc.createIdempotentToken();
        resp.setIdempotentToken(idempotentToken);
        return resp;
    }
}
